package cn.wdm.basic.controller;

import cn.wdm.basic.exception.BusinesExceprion;
import cn.wdm.basic.util.AjaxResult;
import cn.wdm.basic.util.FastdfsUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 分布式文件接口
 * 1.上传接口 前端来访问我，将接口暴露给前端，来完成文件上传到fastDfs系统，返回一个文件存储位置引用
 *      FastdfsUtil.upload(file.getBytes(),extName);
 *
 *
 * 2.删除 前端传来文件的相对路径 感觉group 和
 *  FastdfsUtil.delete(group,filename);
 */

@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {

    /**
     * 上传文件
     * @param file
     * @return
     */
    @PostMapping("/upload")
    public AjaxResult update(@RequestPart(value = "file",required = true) MultipartFile file){
        try {
            //拿去原始的名字
            String originalFilename = file.getOriginalFilename();
            //获取后缀名字
            String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            byte[] fileBytes = file.getBytes();
            String path = FastdfsUtil.upload(fileBytes, extName);
            return AjaxResult.me().setResultObj(path);
        } catch (BusinesExceprion e) {//我们自己的业务异常，我们需要自己处理
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage("保存对象失败！"+e.getMessage());
        }
    }
    @DeleteMapping("/delete")
    public AjaxResult delete(@RequestParam() String path){
        //FastdfsUtil.delete(group,filename) /group/filename
        try {
            String str = path.substring(1);//:     group/filename
            String group = str.substring(0, str.indexOf("/"));
            //:str   /filename
            String filename = str.substring(str.indexOf("/")+1);
            FastdfsUtil.delete(group,filename);
            return AjaxResult.me();
        } catch (BusinesExceprion e) {//我们自己的业务异常，我们需要自己处理
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage("保存对象失败！"+e.getMessage());
        }
    }


}
